1. Field of the Invention
The present invention relates to computer aided design (CAD) of integrated circuits, and more specifically to a method and apparatus for notifying the status of execution of jobs used to characterize cells in an integrated circuit.
2. Related Art
Integrated circuits (ICs) generally contain several components (flip-flops, pins, logic gates, multiplexors, etc.) commonly referred to as cells. To facilitate designing of ICs using CAD tools (implemented on computer systems), it is often desirable to determine the behavior of each cell under various conditions (e.g., combination of different manufacturing process, temperature, voltage, etc.), and the corresponding task is generally referred to as characterization. Once all potential cells of interest are characterized, the corresponding results can be used to quickly design any desired IC.
Characterization of cells often requires a large number of computations, generally due to several combination of conditions and the number of parameters of interest, the potential variations in input signals, etc. For example, in characterizing a two input AND gate, four parameters (e.g., path delay, input pin capacitance, rise time of output signal), 20 combinations of conditions, and input signals with possibly 5 slews (the rate at which the input signal rises/falls), 5 loads on output pins may be of interest. As may be appreciated, the number of characterizations required in such a scenario equals at least several hundreds.
Assuming that 600 cells (OR gate, NAND gate, etc.) need to be characterized, the number of characterizations required equals many thousands. Each of such characterizations may in turn require many computations. Accordingly, depending on the processing power available, the characterizations together may consume a long period (e.g., many days). In general, it is desirable to decrease the time for characterizations.
In one approach, each characterization is divided into several jobs, and the jobs are executed in parallel using a number of computer systems (client machines). In general, a job refers to a portion of a characterization, which can be performed by executing corresponding software instructions as an independent program. The parallelism that can be exploited is often limited by data/signal dependencies among the jobs, the number of machines, number of jobs that can be executed on each machine, etc., as is well known in the relevant arts.
In general, the jobs are scheduled for execution based on completion of execution of prior (scheduled) jobs both due to the data/signal dependencies and the limited number of jobs that can be executed in parallel. Accordingly, it may be desirable for a scheduling task to have information on the status of execution (at least as to whether execution is complete) of various jobs already executing.
In one prior approach, a central machine polls (e.g., round robin fashion) each client machine at regular intervals to determine the status of execution of jobs executing on the corresponding machine. One disadvantage with the above approach is that polling based approaches result in processing overhead in both the machine from which polling is being performed and the client machine, and also traffic overhead if a network is used between the two machines.
In addition, a client machine may remain idle corresponding to a time duration between completion of execution of a job(s) and a subsequent poll. The idle time can be decreased by decreasing the polling interval, but unfortunately smaller polling intervals generally lead to a corresponding increase in the processing and traffic overheads noted above. Accordingly such an approach may be undesirable at least in some environments.
In another prior approach, the status of execution of jobs is written into a file stored on a secondary (or persistent) storage. An individual file may be maintained in each client system or shared by several client systems. The status of execution of various jobs can be determined by examining the file(s). Such an approach may also have at least some of the disadvantages (processing and traffic) noted above with respect to polling.
There may be additional overhead associated with sharing (i.e., potentially multiple client systems attempting to write to the same file, and another system trying to read from the files) of the files. For example, a file may need to be locked while data is being written, and released once the writing is complete. Client machines may remain idle while waiting to access a locked file resulting in under utilization of resources present in client machines. Accordingly, such solutions may also not be desirable in several environments.
What is therefore needed is an improved method and apparatus for notifying the status of execution of jobs used to characterize cells in an integrated circuit.
In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.